/*
 * File:   point.h
 * Author: gustavo
 *
 * Created on August 20, 2011, 7:29 PM
 */

#ifndef POINT_H
#define	POINT_H

#ifdef	__cplusplus
extern "C" {
#endif

#include "../object/object.h"
#include <util/types.h>
#include "geometry.h"

	/* ========================================================================== */


	/* ========================================================================== */

	//	typedef enum _imp_point_type ImpPointType;

	//	enum _imp_point_type {
	//		IMP_POINT_SHORT = 0,
	//		IMP_POINT_INT,
	//		IMP_POINT_FLOAT,
	//		IMP_POINT_DOUBLE
	//	};
	//#define IMP_POINT_CHAR	IMP_POINT_SHORT

	/* ========================================================================== */


	/* ========================================================================== */
	//	ImpPointClass * imp_point_get_class(void);
	//	ImpPoint * imp_point_new(real x, real y, real z);
	//	void imp_point_set(ImpPoint * p, real x, real y, real z);

	/* ========================================================================== */
	//#define imp_point_get_char	imp_point_get_short
	//	inline int imp_point_get_short(ImpPoint * p, long int i);
	//	inline int imp_point_get_int(ImpPoint * p, long int i);
	//	inline int imp_point_get_float(ImpPoint * p, long int i);
	//	inline int imp_point_get_real(ImpPoint * p, long int i);

	/* ========================================================================== */
	//#define imp_point_set_char	imp_point_set_short
	//	inline int imp_point_set_short(ImpPoint * p, long int i, short val);
	//	inline int imp_point_set_int(ImpPoint * p, long int i, int val);
	//	inline int imp_point_set_float(ImpPoint * p, long int i, float val);
	//	inline int imp_point_set_real(ImpPoint * p, long int i, real val);

	/* ========================================================================== */
	//	real imp_point_distance2(ImpPoint * p1, ImpPoint * p2);
	//	real imp_point_distance(ImpPoint * p1, ImpPoint * p2);
	//	ImpOrientation imp_point_orientation(ImpPoint * a, ImpPoint * b, ImpPoint * c);
	//	boolean imp_point_in_left(ImpPoint * a, ImpPoint * b, ImpPoint * c);
	//	boolean imp_point_are_collinear(ImpPoint * a, ImpPoint * b, ImpPoint * c);
	//	boolean imp_point_in_right(ImpPoint * a, ImpPoint * b, ImpPoint * c);
	//	boolean imp_point_in_rect(ImpPoint * a, ImpPoint * b, ImpPoint * c);
	//	//ImpIntersect imp_point_in_triangle_circle(ImpPoint * p, ImpTriangle * t);
	//	ImpPoint imp_point_mid_point( ImpPoint * a, ImpPoint * b);
	//	void imp_point_print(ImpPoint * p);

#ifdef	__cplusplus
}
#endif

#endif	/* POINT_H */

